package com.ctshk.rpc.bus.req;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 * 巴士产品预订设置信息req
 * </p>
 *
 * @author 彭柳霖
 * @since 2021-02-09
 */
@Data
@ApiModel(value="BusProductReservationSettingsReq对象", description="巴士产品预订设置信息req")
public class BusProductReservationSettingsReq implements Serializable {

    private static final long serialVersionUID = 1L;

    private Long id;

    @NotNull(message = "巴士产品id不能为空")
    @ApiModelProperty(value = "巴士产品id")
    private Long[] busProductIds;

    @ApiModelProperty(value = "开售类型（1：立即开售 2：定时开售）")
    private Integer saleType;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "开售开始时间")
    private LocalDate saleBeginDate;

    @DateTimeFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "开售结束时间")
    private LocalDate saleEndDate;

    @ApiModelProperty(value = "是否二次确认")
    private Integer isConfirm;

    @ApiModelProperty(value = "预订须知")
    private String bookingInformation;

    @ApiModelProperty(value = "退改设置")
    private Integer changeSettings;

    @ApiModelProperty(value = "服务费类型(1:数值 2：百分比)")
    private Integer serviceChargeType;

    @ApiModelProperty(value = "服务费")
    private BigDecimal serviceChargePrice;

    @ApiModelProperty(value = "退改手续费类型")
    private Integer refundFeeType;

    @ApiModelProperty(value = "退改手续费")
    private BigDecimal refundFeePrice;

    @ApiModelProperty(value = "是否需要证件（0：不需要 1：需要）")
    private Integer isNeedCertificates;

    @ApiModelProperty(value = "取票类型(1：电子票 2：纸质票)")
    private Integer ticketCollectionType;

    @ApiModelProperty(value = "取票类型对应方式")
    private String ticketCollection;

    @ApiModelProperty(value = "兑换方式")
    private Integer exchangeMethod;

    @ApiModelProperty(value = "保存方式 1-保存  2-提交审批保存")
    private Integer saveType;

}
